/**
 * Created by MyPC on 2017/6/12.
 */

const SUCCESS = 1;
const FAIL = 0;
const ERROR = 2;
/**
 * 若只传一个参数,
 *   第一个参数为字符串,则默认status=0,msg等于该字符串
 *   若第一个参数不为字符串,则默认status=1,msg='success',data为该参数内容
 * 若传两个参数,
 *   且第一个参数为数字类型,则status等于第一个参数,msg等于第二个参数
 *   若第一个参数不为数字类型,且第二个参数为数字类型,则status=第二个参数,msg等于第一个参数
 * 若传三个参数,
 *   则第一个参数为status,第二个参数为msg,第三个参数为data
 * @returns {{}}
 */
function create() {
  let result = {}
  if(arguments.length==1){
    if(typeof arguments[0] === 'string'){   //若只穿一个字符串类型的参数,则默认该字符串是错误的信息
      result.status = FAIL;
      result.msg = arguments[0];
    }else{
      result.status = SUCCESS;
      result.msg = 'success';
      result.data = arguments[0];
    }
  }else if(arguments.length==2){
    if(typeof arguments[0] === 'number'){
      result.status = arguments[0];
      result.msg = arguments[1];
    }else if(typeof arguments[1] === 'number'){
      result.status = arguments[1];
      result.msg = arguments[0];
    }
  }else if(arguments.length==3){
    result.status = arguments[0];
    result.msg = arguments[1];
    result.data = arguments[2];
  }
  return result;
}
// FIXME: 20170622 这里记得优化,应该有更好的实现方式
function returnJson(res) {
  if(arguments.length===2){
    res.json(create(arguments[1]));
  }else if(arguments.length===3){
    res.json(create(arguments[1],arguments[2]));
  }else if(arguments.length===4){
    res.json(create(arguments[1],arguments[2],arguments[3]));
  }

}

returnJson.prototype.SUCCESS = SUCCESS;
returnJson.prototype.FAIL = FAIL;
returnJson.prototype.ERROR = ERROR;

module.exports = returnJson;
